package bbalgae.swing.outline;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.GridLayout;
import java.awt.FlowLayout;
import javax.swing.JButton;
/**
 * 배치관리자 Layout Manager
 * JFrame, JDialog, JPanel 같은 컨테이너에 하위 컴포넌트를 배치하려면 LayoutManager를 이용해야 함.
 * 하위 컴포넌트(button, label등)를 배치하려면 LayoutManager를 이용해야 함
 * LayoutManager를 컨테이너에 추가하려면 setLayout메소드를 이용
 * 또한, LayoutManager에게 컴포넌트의 적절한 크기를 알려주려면 setPreferredSize메소드를 사용
 * button.setPreferredSize(new Dimension(150,150));
 * LayoutManager는 인터페이스임 하지만, 특별한 경우를 제외하고
 * 이것을 구현할 필요는 없음 LayoutManager<- FlowLayout,BorderLayout,CardLayout,GirdLayout,
 * 																			GridBagLayout,BoxLayout,SpringLayout
 * 
 * BoxLayout,SpringLayout등은 javax.swing 패키지에 포함됨.
 * FlowLayout
 * 컴포넌트들을 수평방향으로 배치한다.
 * 기본 흐름방향은 왼쪽에서 오른쪽
 * 먼저 추가한 컴포넌트는 나중에 추가한 컴포넌트의 왼쪽에 놓임
 * 만일, 배치할 공간이 없다면 다음 줄에 놓음
 * 
 * 수평 행 정렬은 LEFT,RIGHT, CENTER LEADING, TRAILING등이 있음
 * hgap, vgap은 각 컴포넌트드들간의 수평 간격, 수직간격을 정의 한 것임.
 */


public class J12_FlowLayoutFrame extends JFrame {

	private JPanel contentPane;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					J12_FlowLayoutFrame frame = new J12_FlowLayoutFrame();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public J12_FlowLayoutFrame() {
		setTitle("Flow Layout");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(new FlowLayout(FlowLayout.TRAILING, 40, 40));
		
		JButton btnNewButton_4 = new JButton("New button");
		contentPane.add(btnNewButton_4);
		
		JButton btnNewButton_6 = new JButton("New button");
		contentPane.add(btnNewButton_6);
		
		JButton btnNewButton_2 = new JButton("New button");
		contentPane.add(btnNewButton_2);
		
		JButton btnNewButton_1 = new JButton("New button");
		contentPane.add(btnNewButton_1);
		
		JButton btnNewButton_7 = new JButton("New button");
		contentPane.add(btnNewButton_7);
		
		JButton btnNewButton_8 = new JButton("New button");
		contentPane.add(btnNewButton_8);
		
		JButton btnNewButton = new JButton("New button");
		contentPane.add(btnNewButton);
		
		JButton btnNewButton_3 = new JButton("New button");
		contentPane.add(btnNewButton_3);
		
		JButton btnNewButton_5 = new JButton("New button");
		contentPane.add(btnNewButton_5);
		
		JButton btnNewButton_9 = new JButton("New button");
		contentPane.add(btnNewButton_9);
	}

}
